// @File  : jwt.go
// @Author: JunLong.Liao&此处不应有BUG!
// @Date  : 2021/5/26
// @slogan: 又是不想写代码的一天，神兽保佑，代码无BUG！
//         ┏┓      ┏┓
//        ┏┛┻━━━━━━┛┻┓
//        ┃     ღ    ┃
//        ┃  ┳┛   ┗┳ ┃
//        ┃     ┻    ┃
//        ┗━┓      ┏━┛
//          ┃      ┗━━━┓
//          ┃ 神兽咆哮!  ┣┓
//          ┃         ┏┛
//          ┗┓┓┏━━━┳┓┏┛
//           ┃┫┫   ┃┫┫
//           ┗┻┛   ┗┻┛

package middleware

import (
	jwt "courseware/util/middleware/JWT"
	"github.com/gin-gonic/gin"
	"net/http"
	"strings"
)

func JWTAuth() gin.HandlerFunc {
	return func(c *gin.Context) {
		token := c.GetHeader("Authorization")
		if token == "" {
			c.JSON(http.StatusCreated, gin.H{
				"message": "token不能为空",
			})
			c.Abort()
		}

		// fmt.Printf("token:%s\n", token)
		tokenStr := strings.TrimPrefix(token, "Bearer ")
		// fmt.Printf("tokenStr:%s\n", tokenStr)
		j := jwt.NewJWT()
		claims, err := j.ParseToken(tokenStr)
		if err != nil {
			c.JSON(http.StatusCreated, gin.H{
				"message": "Token解析错误",
			})
			c.Abort()
		}

		c.Set("claims", claims)
	}
}
